<?php

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/1/17
 * Time: 10:27
 */
class Application{
    static public function run(){
        header('Content-type:text/html;charset=utf-8;');
        //初始化配置项
        C(require V5_PATH.'/config.php');
        //当前请求模块
        $model = isset($_GET[C('VAR_MODULE')])?$_GET[C('VAR_MODULE')]:'Index';
        //当前请求控制器
        $controller = isset($_GET[C('VAR_CONTROLLER')])?$_GET[C('VAR_CONTROLLER')]:'Index';
        //当前请求动作
        $action = isset($_GET[C('VAR_ACTION')])?$_GET[C('VAR_ACTION')]:'index';

        //判断是否存在 模块/控制器/动作
        $model = ucfirst($model);
        $controller = ucfirst($controller);
        //定义当前模块名
        define('MODULE',$model);
        //定义当前控制器名
        define('CONTROLLER',$controller);
        //定义当前动作名
        define('ACTION',$action);
        //定义模块路径
        define('MODULE_PATH',APP_PATH.$model.'/');
        //定义控制器路径
        define('CONTROLLER_PATH',MODULE_PATH.'Controller/');
        //定义模型路径
        define('MODEL_PATH',MODULE_PATH.'Model/');
        //定义模板视图路径
        define('VIEW_PATH',MODULE_PATH.'View/');
        //加载模块配置项
        if(is_file(MODULE_PATH.'/Config/config.php')){
            C(require MODULE_PATH.'/Config/config.php');
        }

        if(!is_dir(MODULE_PATH)){
            halt('模块不存在');
        }
        $controllerFile = CONTROLLER_PATH.$controller.'Controller.class.php';
        if(!is_file($controllerFile)){
            halt('控制器不存在');
        }

        //路由核心，调用控制器类
        require $controllerFile;
        $class = $controller.'Controller';
        $obj = new $class;
        $obj->$action();
    }
}